const app=getApp();
const request=require('../../utils/request.js');//获取封装的请求函数
const globleurl = require('../../utils/serverconfig.js').url;
const  qqmapsdk=app.globalData.qqmapsdk;
const sortarr=require('../../utils/sortarr').sortarr;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    defaultCity:'',
    cinemalist:[],
    showNetworkerr:false,
    showloding:true,
    shownodata:false,
    nodataurl:globleurl+'/images/nodata.png'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  //   let _this=this;
  //  this.cityInit(_this);
      // this.insertcinema();
      this.cityInit(this);
      this.setData({
        defaultCity:app.globalData.defaultCity
      });
   
  },

  selectCity:function(){
    wx.redirectTo({
      url: `../selectlocation/pages/switchcity/switchcity?index=1`,
    })
  },



  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {


  },


  // 网络走丢重试
  networkRetry(){
   app.initPage();
   this.getCinemaList();
  },

  insertcinema(){
    let _this=this;
    qqmapsdk.search({
      keyword:'影院',
      region:'保定',
      page_size:20,
      page_index:1,
      success:function(res){
        console.log(res);
        for(var i=0;i<res.data.length;i++){
          if(i==res.data.length-1){
            request.myrequest('/miniapp/insertcinema',{nm:res.data[i].title,addr:res.data[i].address,tel:res.data[i].tel,lat:res.data[i].location.lat,lng:res.data[i].location.lng})
            .then(v=>{
              console.log('完成插入请求了');
              // _this.getCinemaList();  不能让发完请求执行这一句，因为这一句在同步队列，无论请求快不快，执行都在第一条请求发出之前
            })
          }
          request.myrequest('/miniapp/insertcinema',{nm:res.data[i].title,addr:res.data[i].address,tel:res.data[i].tel,lat:res.data[i].location.lat,lng:res.data[i].location.lng});
          
        };
       
      }
    })
  },



  //获取电影院列表 并进行分页处理
  cinemaquery:{
    pagesize:13,//每页多少
    pageIndex:1,//页码
  },
  pagecount:0,//总页数
  async getCinemaList(){
     let _this=this;
     let cinemadata=await request.myrequest('/miniapp/getCinemaList',{cityName:app.globalData.defaultCity,userlocationinfo:app.globalData.userLocation,cinemaquery:_this.cinemaquery});
     //网络错误服务器错误
      let rg=/^[23]\d{2}$/;
      if(!rg.test(cinemadata.statusCode)){
        this.setData({
          showloding:false,
          showNetworkerr:true
        });
        return;
      };
     if(cinemadata.data.cinemalist.length==0){
       //数据库没信息
      this.setData({
        shownodata:true,
        showloding:false,
        showNetworkerr:false,
      });
     }else{
       //将下一页影院数据进行拼接，并重新对影院列表按照距离排序
       let cinemalist=[...this.data.cinemalist,...cinemadata.data.cinemalist];
       cinemalist.forEach(item=>{
         item.usertodistance=Number(item.usertodistance);
       })
       cinemalist=sortarr(cinemalist,0);
      this.setData({
        showNetworkerr:false,
        showloding:false,
        cinemalist:cinemalist,
        shownodata:false,
        havemoredata:false
      });
      this.pagecount=cinemadata.data.pagecount;
     };
    wx.stopPullDownRefresh();
  },

//当触底，重新发请求
  onReachBottom: function () {

    let _this=this;

    /*当触底时  如果请求页码大于等于总页码数 */
    if(this.cinemaquery.pageIndex >= this.pagecount){

      this.setData({
        havemoredata:false,
        nohavemoredata:true
      })
    }else{
      this.cinemaquery.pageIndex++;
      this.setData({
        havemoredata:true
      })
      this.getCinemaList();//请求下一页数据
    };

  },

  onPullDownRefresh: function () {
    // 当下拉刷新时
    // 1.重置请求页面索引,重置总页数,重置session
    this.cinemaquery.pageIndex=1;
    this.pagecount=0;
    //2.清空列表数据
    this.setData({
      nohavemoredata:false
    });
    this.data.cinemalist=[];
    //重新请求
    this.getCinemaList();
  },

 

  cityInit:function(_this) {

    if (app.globalData.userLocation) {
     //当定位快的时候，页面同步渲染就可以,比如加载进了首页，但没有第一时间点击影城，定位拿到了,不需要回调
     this.getCinemaList();
      this.setData({
        defaultCity: app.globalData.defaultCity ? app.globalData.defaultCity : '定位失败'
      })
    } else {

      //当定位慢，需要等拿到定位了后，添加全局的回调函数，这里添加这个步骤是同步队列的，一定比获取定位快，等获取了定位执行回调
        app.userLocationReadyCallback = () => {
        this.getCinemaList();
        this.setData({
          defaultCity: app.globalData.defaultCity ? app.globalData.defaultCity : '定位失败'
        });
      }
    }
  },

  // 点击电影院
  oncinematap(e){
    // console.log(e);
    let  cinemaid=e.currentTarget.dataset.id

    wx.navigateTo({
      url: `../cinemashow/cinemashow?cinemaid=${cinemaid}`
    })
  }
})